﻿Imports System.Data
Imports MySql.Data.MySqlClient
Imports MySql.Data

Public Class controlServidorHackCharacter
    Private adap As MySqlDataAdapter    ' Encargado de ser el puente entre la base de datos y el DataSet.
    Private cmd As MySqlCommand     ' Se encarga de realizar las querys que no devuelven ningún valor.
    Private miDataSet As DataSet        ' DataSet donde se almacenan los datos obtenidos por las querys a la BBDD
    Private conn As MySqlConnection     ' Connector para conectar a la BBDD
    Private connStr As String           ' Cadena de conexión
    Private ipServer As String          ' IP del servidor
    Private uid As String               ' Usuario con el que se conecta a al BBDD
    Private pwd As String               ' Contraseña necesaria para la base de datos 
    Private database As String          ' Nombre de la base de datos
    Private aTablas() As String '= {"aventuras"} 'Contiene todas las tablas de la base de datos.

    'Constructor
    Public Sub New()
        Me.connStr = "server=127.0.0.1;uid='root';pwd=''; database='hackchracter'; pooling=false"
        Me.conn = New MySqlConnection(Me.connStr)
        Me.miDataSet = New DataSet
    End Sub

    Public Sub New(ByVal ipServer As String, _
                   ByVal uid As String, _
                   ByVal pwd As String, _
                   ByVal database As String, _
                   ByVal aTablas() As String)
        'Asignación de los valores.
        Me.ipServer = ipServer
        Me.uid = uid
        Me.pwd = pwd
        Me.database = database
        Me.connStr = "server=" & Me.ipServer & ";uid=" & Me.uid & ";pwd=" & Me.pwd & ";database=" & Me.database & ";"
        Me.aTablas = aTablas
        Me.conn = New MySqlConnection(Me.connStr)
        Me.miDataSet = New DataSet
    End Sub

    'Métodos
    '________SETTERS_________

    '________GETTERS_________

    Function getDataSet() As DataSet
        Return Me.miDataSet
    End Function

    Function getDataSetPrueba(ByVal tabla As String) As System.Data.DataTable
        Return Me.miDataSet.Tables(tabla)
    End Function

    '_______GENÉRICOS________

    Public Sub dataSetToXml(ByVal path As String)
        Me.miDataSet.WriteXml(path)
    End Sub

    'Refresca los datos del DataSet.
    Public Sub refrescarDataSet()
        Dim x As Integer 'Contador para moverse por la array de tablas.
        Try
            Me.conn.Open()

            'Vacia el DataSet por completo
            Me.miDataSet.Clear()

            'Por cada tabla existente en la base de datos, realizar la consulta y
            'almacenarla en el dataset con el nombre de la tabla.
            For x = 0 To Me.aTablas.Length - 1
                'Consulta
                Me.adap = New MySqlDataAdapter("SELECT *  FROM " & Me.aTablas(x), Me.conn)

                'Asignar al DataSet las filas obtenidas por la consulta.
                'Tambien se le pone un pseudónimo para acceder en un futuro a la información.
                Me.adap.Fill(Me.miDataSet, Me.aTablas(x))
            Next x

        Catch ex As Exception
            MsgBox(ex.ToString)
        Finally
            Me.conn.Close()
        End Try
    End Sub

    Public Sub modificarDatos(ByVal query As String)
        Try
            Me.conn.Open()
            cmd = New MySqlCommand
            cmd.Connection = Me.conn
            cmd.CommandText = query
            cmd.ExecuteNonQuery()
        Catch ex As Exception
            MsgBox(ex.ToString)
        Finally
            Me.conn.Close()
        End Try
    End Sub

End Class
